package com.sugon.entity;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;


/**
 * 部门管理
 *
 * @author lipengjun
 * @date 2017-09-17 23:58:47
 */
@Data
public class SysDeptEntity extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private String id;

    /**
     * 部门ID
     */
    private String deptId;

    /**
     * 协同部门ID
     */
    private String xtDeptId;

    /**
     * 各车间用到的库位编码前缀
     * 一般只有车间可以填写
     */
    private String posPrefix;

    /**
     * 备件事务来源ID，多个事务来源ID间用英文逗号分隔
     * 一般只有车间可以填写
     */
    private String spTxnSource;

    /**
     * 上级部门ID，一级部门为0
     */
    private String parentId;

    /**
     * 部门名称
     */
    private String name;

    /**
     * 部门简称
     */
    private String shortName;

    /**
     * 排序
     */
    private Integer orderNum;

    /**
     * 部门等级
     */
    private Integer deptLevel;

    /**
     * 是否有效 -1(无效) 0(有效)
     */
    private Integer status;

    /**
     * 父组织名称
     */
    private String parentName;

    /**
     * 父组织Code
     */
    private String parentCode;
    /**
     * ztree属性
     */
    private Boolean open;

    private ArrayList<SysDeptEntity> list;

    /**
     * 部门类型
     * <p>
     * DT_ZZCJ   铸造车间
     * DT_SBJSS  设备技术室
     * DT_SCGLS 生产管理室
     * DT_JSZLS   技术质量室
     * DT_SBWXZ  设备维修组
     * DT_MJJSS  模具技术室
     * DT_MJWXZ   磨具维修组
     * DT_ZZC  制造处
     * DT_CJKSCX  车间、产线、工序
     * DT_AQHBC   安全环保处
     */
    private String deptType;

    /**
     * 由于工厂的组织结构中顶层组织结构是通用的，
     * 然后子部门在细分为设备、人员
     * 所有特别设置flag来标识这种需求
     * 每一条部门数据分为三类
     * 通用部门：一般指工厂和车间 2
     * 人员组织： 1
     * 设备组织： 0
     */
    private String flag;
    /**
     * 部门代码
     */
    private String dcode;

    /**
     * 车间触发时长，主要用于维修工无法在规定时间内
     * 完成维修，会自动触发上级帮助
     */
    private Integer workshopTriggerTime;

    /**
     * 车间触发时长，主要用于维修工无法在规定时间内
     * 完成维修，会自动触发制造处帮助
     */
    private Integer factoryTriggerTime;

    /**
     * 获取复合名称
     * 部门代码 + " " + 部门名称
     *
     * @return
     */
    public String getComplexName() {
        return (StrUtil.isNotEmpty(dcode) ? dcode + " " : "") + getShowName();
    }

    public String getShowName() {
        return StrUtil.isNotEmpty(this.shortName) ? this.shortName : this.name;
    }

}
